package com.qc.sys.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.google.common.collect.Lists;
import com.qc.common.base.BaseEntity;
import com.qc.common.config.Global;
import com.qc.common.utils.StringUtils;

import java.util.Date;
import java.util.List;

public class User extends BaseEntity{
    private boolean mobileLogin; // 是否手机登录
    /**
     * 账号
     */
    private String name;

    /**
     * 
     */
    private String password;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 
     */
    private String mobile;

    /**
     * 
     */
    private String idNo;

    /**
     * 
     */
    private String email;

    /**
     * 账号状态0可用，1不可用
     */
    private String loginFlag;

    /**
     * 最后一次登录IP
     */
    private String loginIp;

    /**
     * 最后一次登录时间
     */
    private Date loginDate;
    /**
    * 原登录名
     */
    private String oldLoginName;
    private Role role;
    private List<Role> roleList = Lists.newArrayList(); // 拥有角色列表
    private String newPassword;	// 新密码
    private String roleIds ="";
    /**
     *
     * @mbggenerated 2017-10-24
     */
    public User() {
        super();
    }

    public User(Role role) {
        this.role = role;
    }

    public User(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getName() {
        return name;
    }

    /**
     * 账号
     * @param name 账号
     */
    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    /**
     * 
     * @return password 
     */
    public String getPassword() {
        return password;
    }

    /**
     * 
     * @param password 
     */
    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    /**
     * 昵称
     * @return nickname 昵称
     */
    public String getNickname() {
        return nickname;
    }

    /**
     * 昵称
     * @param nickname 昵称
     */
    public void setNickname(String nickname) {
        this.nickname = nickname == null ? null : nickname.trim();
    }

    /**
     * 
     * @return mobile 
     */
    public String getMobile() {
        return mobile;
    }

    /**
     * 
     * @param mobile 
     */
    public void setMobile(String mobile) {
        this.mobile = mobile == null ? null : mobile.trim();
    }

    /**
     * 
     * @return id_no 
     */
    public String getIdNo() {
        return idNo;
    }

    /**
     * 
     * @param idNo 
     */
    public void setIdNo(String idNo) {
        this.idNo = idNo == null ? null : idNo.trim();
    }

    /**
     * 
     * @return email 
     */
    public String getEmail() {
        return email;
    }

    /**
     * 
     * @param email 
     */
    public void setEmail(String email) {
        this.email = email == null ? null : email.trim();
    }

    /**
     * 账号状态0可用，1不可用
     * @return login_flag 账号状态0可用，1不可用
     */
    public String getLoginFlag() {
        return loginFlag;
    }

    /**
     * 账号状态0可用，1不可用
     * @param loginFlag 账号状态0可用，1不可用
     */
    public void setLoginFlag(String loginFlag) {
        this.loginFlag = loginFlag == null ? null : loginFlag.trim();
    }

    public boolean isAdmin() {
        boolean result = false;
        if (Global.getConfig("adminkey").equals(id)) {
            result = true;
        }
        return result;
    }
    /**
     * 最后一次登录IP
     * @return login_ip 最后一次登录IP
     */
    public String getLoginIp() {
        return loginIp;
    }

    /**
     * 最后一次登录IP
     * @param loginIp 最后一次登录IP
     */
    public void setLoginIp(String loginIp) {
        this.loginIp = loginIp == null ? null : loginIp.trim();
    }

    /**
     * 最后一次登录时间
     * @return login_date 最后一次登录时间
     */
    public Date getLoginDate() {
        return loginDate;
    }

    /**
     * 最后一次登录时间
     * @param loginDate 最后一次登录时间
     */
    public void setLoginDate(Date loginDate) {
        this.loginDate = loginDate;
    }

    public Role getRole() {
        return role;
    }

    public void setRole(Role role) {
        this.role = role;
    }

    public List<Role> getRoleList() {
        return roleList;
    }

    public void setRoleList(List<Role> roleList) {
        this.roleList = roleList;
        for (Role role : roleList) {
            roleIds+= ","+role.getId();
        }
    }

    public String getOldLoginName() {
        return oldLoginName;
    }

    public void setOldLoginName(String oldLoginName) {
        this.oldLoginName = oldLoginName;
    }

    public boolean isMobileLogin() {
        return mobileLogin;
    }

    public void setMobileLogin(boolean mobileLogin) {
        this.mobileLogin = mobileLogin;
    }

    public String getNewPassword() {
        return newPassword;
    }

    public void setNewPassword(String newPassword) {
        this.newPassword = newPassword;
    }

    @JsonIgnore
    public String getRoleIds() {
        return roleIds;
    }

    public void setRoleIds(String roleIds) {
        this.roleIds = roleIds;
    }
}